package 八大排序;

/**
 * 简单选择排序：常用于取序列中最大最小的几个数时。
 * @author 刘学松
 * @date 2021/2/25 17:00
 */
public class 简单选择排序 {
    public static void main(String[] args) {
        ArrayUtils.printArray(selectSort(ArrayUtils.array));
    }

    public static int[] selectSort(int[] a) {
        int length = a.length;
        int num;
        int index;
        for (int i = 0; i < length; i++) {
            // 记录最后要交换元素的下标
            index = i;
            // 记录最后要交换的元素
            num = a[i];
            // 从下一个元素开始遍历
            int j = i+1;
            while (j < length) {
                // 当前元素比记录元素小，则更新记录元素及其下标
                if (a[j] < num) {
                    num = a[j];
                    index = j;
                }
                j++;
            }
            // 交换元素
            a[index] = a[i];
            a[i] = num;
        }
        return a;
    }
}
